package com.cmc.cloud.cmclink.doc.service;

import java.util.*;
import javax.validation.*;

import com.cmc.cloud.cmclink.doc.vo.blnolocalcostvo.BlnoLocalCostCalSendJsonVO;
import com.cmc.cloud.cmclink.doc.vo.blnolocalcostvo.BlnoLocalCostCalReceiveJsonVO;
import com.cmc.cloud.cmclink.doc.vo.localcostratevo.LocalCostRateCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.localcostratevo.LocalCostRateExportVO;
import com.cmc.cloud.cmclink.doc.vo.localcostratevo.LocalCostRatePageReqVO;
import com.cmc.cloud.cmclink.doc.vo.localcostratevo.LocalCostRateUpdateReqVO;
import com.cmes.framework.common.pojo.PageResult;
import com.cmc.cloud.cmclink.doc.entity.LocalCostRateDO;

/**
 * 提单本地费用费率 Service 接口
 *
 * @author 招商轮船-管理员
 */
public interface LocalCostRateService {

    /**
     * 创建提单本地费用费率
     *
     * @param createReqVO 创建信息
     */
    void createLocalCostRate(@Valid LocalCostRateCreateReqVO createReqVO);

    /**
     * 更新提单本地费用费率
     *
     * @param updateReqVO 更新信息
     */
    void updateLocalCostRate(@Valid LocalCostRateUpdateReqVO updateReqVO);

    /**
     * 删除提单本地费用费率
     *
     * @param id 编号
     */
    void deleteLocalCostRate(Long id);

    /**
     * 获得提单本地费用费率
     *
     * @param id 编号
     * @return 提单本地费用费率
     */
    LocalCostRateDO getLocalCostRate(Long id);

    /**
     * 获得提单本地费用费率列表
     *
     * @param ids 编号
     * @return 提单本地费用费率列表
     */
    List<LocalCostRateDO> getLocalCostRateList(Collection<Long> ids);

    /**
     * 获得提单本地费用费率分页
     *
     * @param pageReqVO 分页查询
     * @return 提单本地费用费率分页
     */
    PageResult<LocalCostRateDO> getLocalCostRatePage(LocalCostRatePageReqVO pageReqVO);

    /**
     * 批量审核提单本地费用费率
     *
     * @param ids 提单本地费用费率编号
     * @param b 是否审核通过
     */
    void batchApprove(List<Long> ids, boolean b);

    /**
     * 导出提单本地费用费率列表
     *
     * @param portCode 港口代码
     * @param imExType 进出口类型
     * @return 导出提单本地费用费率列表
     */
    List<LocalCostRateExportVO> getExportList(String portCode, String imExType);

}
